# ИТ 10. клас – JavaScript вариант на примерите (уроци 4–8 и 11)

Всеки файл съответства на пример или задача от учебника. Решенията за учителя са в папка `reshenia` – тя не се качва при материалите за учениците.

## Как се изпълняват

**Уроци 4, 5 и 6 – в браузъра, без инсталиране.**
Отворете `shablon.html` в браузъра, натиснете F12 → Console. За друга програма сменете името на файла в `<script src="…">` и презаредете (F5).
Може и направо: копирайте кода в конзолата и натиснете Enter. При първо поставяне Chrome и Firefox може да поискат да напишете `allow pasting`.

**Уроци 7, 8 и 11 – в браузъра, чрез локален сървър.**
Браузърът не позволява на страница, отворена с двойно щракване (file://), да зарежда други файлове – нито CSV, нито скриптове с `type="module"`.
Във VS Code инсталирайте разширението **Live Preview** (Microsoft) или **Live Server** → десен бутон върху `index.html` → отворете в браузъра.
Графиките използват Plotly.js от CDN – нужна е връзка с интернет. Ако училищната мрежа блокира CDN, използвайте копията в `biblioteki`: сменете адреса в `<script src="…">` с пътя до копието – от `urok08` и `urok11` това е `../biblioteki/plotly-4.1.2.min.js` (и `../biblioteki/papaparse-5.7.0.min.js`), от `reshenia/urok08` – `../../biblioteki/plotly-4.1.2.min.js`.

**Алтернатива: Node.js (версия 20 или по-нова).**
- Уроци 4–6, от тази папка: `node -r ./node-prompt.js urok05/zadacha1_lice.js` (`node-prompt.js` добавя `prompt()`; не изисква пакети).
- Урок 7: `cd urok07` и `node node/sredna_temperatura_node.js` (чете файла с модула `fs`).
- Графики (урок 8) в Node.js няма – за тях се използва браузърът.

## Съдържание

| Папка | Какво има |
|---|---|
| `urok04` | фиг. 2 – най-малкото от три числа |
| `urok05` | кодът от задачи 1–5: линеен, разклонен и цикличен алгоритъм, BMI |
| `urok06` | масиви, `length`, `Math.max/min`, сбор с цикъл, `push`; `kapani.js` – типичните грешки |
| `urok07` | четене на CSV с `fetch`, колона в масив, вариант за Node.js |
| `urok08` | филтриране, сортиране, стълбовидна диаграма с Plotly.js |
| `urok11` | шаблон за проекта: Papa Parse + Plotly.js; работи с `,` и `;` и с десетична запетая |
| `biblioteki` | локални копия на Plotly.js 4.1.2 и Papa Parse 5.7.0 |
| `reshenia` | **само за учителя** – решения на задачите от уроци 5–8 (вкл. задача 5 от урок 8 с графика и запис като diagram.png) |

Данните в `temperaturi_godina.csv`, `temperatures_july.csv` и `danni.csv` са примерни, а не измерени – заменете ги с реални.

## Кодиране и формат на CSV файловете

- `fetch(...).text()` винаги чете файла като UTF-8. Ако файлът е записан от Excel като „CSV (разделител – запетая)“, той е в Windows-1251 и кирилицата излиза като `�`, без съобщение за грешка. Решения: запишете го като **CSV UTF-8** или прочетете го с `new TextDecoder("windows-1251").decode(await otgovor.arrayBuffer())`.
- Excel с български настройки записва CSV с разделител `;` и десетична запетая. Уроци 7–8 очакват `,`; шаблонът от урок 11 се справя и с двете.
- Файл, записан под Windows, оставя невидим знак `\r` в края на всеки ред. За числови колони това не пречи (`Number("12\r")` е 12); за текст в последната колона използвайте `split(/\r?\n/)`.
